package com.bdbit.ChargingStation.controller.rep;

import lombok.Data;

/**
 * 微信支付会通过POST的方式向回调地址发送回调报文
 */
@Data
public class WxpayNotifyBody {

    /**
     * 回调通知的唯一编号。
     */
    private String id;

    /**
     * 1、定义：本次回调通知创建的时间。
     *
     * 2、格式：遵循rfc3339标准格式：yyyy-MM-DDTHH:mm:ss+TIMEZONE。yyyy-MM-DD 表示年月日；T 字符用于分隔日期和时间部分；HH:mm:ss 表示具体的时分秒；TIMEZONE 表示时区（例如，+08:00 对应东八区时间，即北京时间）。
     *
     * 示例：2015-05-20T13:29:35+08:00 表示北京时间2015年5月20日13点29分35秒。
     */
    private String create_time;

    /**
     * 【通知的类型】微信支付回调通知的类型。
     * 支付成功通知的类型为TRANSACTION.SUCCESS。
     */
    private String event_type;

    /**
     * 【通知数据类型】通知的资源数据类型，固定为encrypt-resource。
     */
    private String resource_type;

    /**
     * 【通知数据】通知资源数据。
     */
    private Resource resource;

    /**
     * 【回调摘要】微信支付对回调内容的摘要备注。
     */
    private String summary;

    /**
     * 【通知数据】通知资源数据。
     */
    @Data
    public static class Resource {
        /**
         * 【加密算法类型】回调数据密文的加密算法类型，目前为AEAD_AES_256_GCM，开发者需要使用同样类型的数据进行解密。
         */
        private String algorithm;

        /**
         * 【数据密文】Base64编码后的回调数据密文，商户需Base64解码并使用APIV3密钥解密，具体参考如何解密证书和回调报文。
         */
        private String ciphertext;

        /**
         * 【附加数据】参与解密的附加数据，该字段可能为空。
         */
        private String associated_data;

        /**
         * 【原始回调类型】加密前的对象类型，为transaction。
         */
        private String original_type;

        /**
         * 【随机串】参与解密的随机串。
         */
        private String nonce;
    }
}
